package edu.biwu;

import edu.bw.model.Student;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.InputStream;

public class MybatisDemo01 {
    @Test
    public void test() {
        //1.创建一个输入流，读取Mybatis中的核心配置文件SqlMapConfig.xml
        InputStream is = MybatisDemo01.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");

        //2.根据SqlMapConfig.xml中的内容构建一个Sql会话工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

        //3.从会话工厂中获取一个Session
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //4.调用sqlSession方法进行CRUD操作,第一个参数传入statement id值
        //我们一般传入 命名空间.id
        Student student = sqlSession.selectOne("test.findBySno", 201215122);
        System.out.println(student);

        //5.关闭会话释放资源
        sqlSession.close();
    }

    @Test
    public void testFindBySname() {
        //1.创建输入流，读取核心配置文件中的内容
        InputStream is = MybatisDemo01.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml");

        //2.根据配置文件中的内容创建一个Sql会话工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

        //3.创建一个Session
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //4.调用sqlSession中的方法进行CRUD操作
        sqlSession.selectList("test.findBySname", "%李%").forEach(System.out::println);

        //5.关闭session会话
        sqlSession.close();
    }
}
